package com.jia.gateway.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

@Configuration
public class GatewayCorsConfiguration {

    // options 我们称之为 预检查
    // 简单请求 Get Post HEAD 条件 text/plain form-data  x-www-form-urlencoded
    // 简单请求不需要 预检查


    // 跨域的解决方案一 nginx 通过反向代理 因为端口号不一样 会跨域
    // 跨域的解决方案二 请求直接允许跨域
    // 允许哪些头跨域
    // 允许哪些请求方式跨域
    // 允许哪些请求来源跨域
    // 允许携带cookies

    @Bean
    public CorsWebFilter corsWebFilter() {
        UrlBasedCorsConfigurationSource source
                = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();

        corsConfiguration.addAllowedHeader("*");

        corsConfiguration.addAllowedMethod("*");

        corsConfiguration.addAllowedOrigin("*");

        corsConfiguration.setAllowCredentials(true);

        source.registerCorsConfiguration("/**", corsConfiguration);

        return new CorsWebFilter(source);
    }

}
